"""
一、异常
执行时检测到的错误成为：异常，异常不一定导致严重的后果；
大多数异常不会被程序处理， 而是显示错误信息
"""

# 1、捕获异常的语法：

try:
    '可能发生错误的代码'
except '异常类型1':
    '如果捕获到该异常类型1执行的代码'
except '异常类型2':
    '如果捕获到该异常类型2执行的代码'

# 如果尝试执行的代码的异常和要捕获的异常类型不一致，则无法捕获异常，程序执行终止。

import traceback

try:
    f = open('abc.txt')
    s = f.readline()
    num = int(s.strip())
    print(num)
except FileNotFoundError:
    print(traceback.format_exc())
    print('文件不存在')
except ValueError:
    print(traceback.format_exc())
    print('值不正确，不能转化')
except Exception:  # Exception是所有异常的父类，通常用 except Exception as err 重命名为err
    print(traceback.format_exc())
else:
    print('没有异常，很高兴')
finally:
    if f:
        print('不管有没有异常，都会执行的代码')
        f.close()
print('程序完成')
